package com.imooc.article.task;

import com.imooc.article.service.ArticleService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

import java.time.LocalDateTime;

/**
 * 定时任务, 这个定时任务是SpringBoot自带的, 直接使用即可
 */
@Slf4j
// 标记配置类，使得springboot容器扫描到
@Configuration
// 开启定时任务, 这个注解也可以放在启动类上面
@EnableScheduling
public class TaskPublishArticles {

    @Autowired
    private ArticleService articleService;

    /**
     * 文章定时发布任务(后续使用MQ), cron含义: 从0秒开始, 每3秒执行一次
     */
    @Scheduled(cron = "0/3 * * * * ?")
    private void publishArticles() {
        log.info("TaskPublishArticles#publishArticles: 执行定时任务 = {}",LocalDateTime.now());
        // 把当前时间应该发布的定时文章, 状态改为即时
        this.articleService.updateAppointToPublish();
    }
}
